/****************************************************************************

	COPYRIGHT(C) MAXSI SOFTWARE, JONAS 'SORTIE' TERMANSEN 2008, 2009, 2010, 2010

    This file is part of Maxsi Engine.

    Maxsi Engine is free software: you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    Maxsi Engine is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    GNU Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public License
    along with Maxsi Engine. If not, see <http://www.gnu.org/licenses/>.

	*/ #include "MaxsiEngineContributors.h" /*

	If you modify this file, please enter your name below and provide contact
	information in MaxsiEngineContributors.h. For more information please see
	MaxsiEngineContributors.h.
	
	Contributors to this file:

	- Jonas 'Sortie' Termansen
	- [your name here]

	MaxsiEngine.dll
	A linkable version of Maxsi Engine

	MaxsiCRuntime.cpp
	Turns out MinGW doesn't support as much useful stuff as Microsoft, so
	we have to implement it ourselves!

****************************************************************************/

#if !defined(MaxsiCRuntime_H) && defined(__MINGW_H)
#define MaxsiCRuntime_H

#include <time.h>

typedef int errno_t;

namespace MaxsiEngine
{

	LINK	int strcat_s(char* strDestination, size_t numberOfElements, const char* strSource);
	LINK	int strcpy_s(char* strDestination, size_t numberOfElements, const char* strSource);
	LINK	int wcscpy_s(wchar_t* strDestination, size_t numberOfElements, const wchar_t* strSource);
	LINK	int	_itoa_s(int value, char *buffer, size_t sizeInCharacters, int radix);
	LINK	int	_uitoa_s(int value, char *buffer, size_t sizeInCharacters, int radix); // Warning: >NOT< present in the Visual Studio CRT!
	LINK	int	_i64toa_s(__int64 value, char *buffer, size_t sizeInCharacters, int radix);
	LINK	int	_ui64toa_s(__int64 value, char *buffer, size_t sizeInCharacters, int radix);
	LINK	int _gcvt_s(char *buffer, size_t sizeInBytes, double value, int digits);
	LINK	errno_t _gmtime64_s(struct tm* _tm, const __time64_t* time);
	LINK	errno_t asctime_s(char* buffer, size_t numberOfElements, const struct tm *_tm);


}

#endif
